package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Listacandidato;
import model.Vaga;
import util.ConexaoBD;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class DAOAlunoVagas extends ModelDAO<Listacandidato> {
	
	private DAOCbo daoCbo = new DAOCbo();
	private DAOEmpregador daoEmp = new DAOEmpregador();
	public DAOAlunoVagas() {
		super(Listacandidato.class);
	}

	public List<Vaga> listarVagas(Integer idade, Integer codAluno) throws SQLException{
		// conectar banco
		Connection con = ConexaoBD.getConnection();
		String sql = "select * from vaga v, aluno a , vagacurso vc, alunocbo ac where a.codAluno="+codAluno+
						" and a.codAluno=ac.codAluno"+
						" and v.codCBO=ac.codCBO and a.codCursoAluno=vc.codCurso"+
						" and v.CNHVaga=a.CNHAluno and v.horarioVaga=a.horarioAluno"+
						" and v.aceitaDefVaga=a.deficienciaAluno and v.sexoVaga=a.sexoAluno"+
						" and v.estCivilVaga=a.estCivilAluno and "+idade+" BETWEEN v.fxEt1 AND v.fxEt2";
		PreparedStatement stmt = (PreparedStatement) con.prepareStatement (sql);
		ResultSet rs = stmt.executeQuery();
			
		List<Vaga> vagas = new ArrayList<Vaga>();
			
		while (rs.next()){
		//criando o objeto usuario
		Vaga v = new Vaga();
		v.setCodVaga(rs.getInt("codVaga"));
		Integer codCBO = rs.getInt("codCBO");
		v.setCbo(daoCbo.search(codCBO));
		Integer codEmp = rs.getInt("codEmp");
		v.setEmpregador(daoEmp.search(codEmp));
		v.setAceitaDefVaga(rs.getString("aceitaDefVaga"));
		v.setCNHVaga(rs.getString("CNHVaga"));
		v.setDataCadVaga(rs.getDate("dataCadVaga"));
		v.setDescAtivVaga(rs.getString("descAtivVaga"));
		v.setEstCivilVaga(rs.getString("estCivilVaga"));
		v.setFaixaEtariaVaga((rs.getString("fxEt1"))+(rs.getString("fxEt2")));
		v.setHorarioCadVaga(rs.getTime("horarioCadVaga"));
		v.setNumMaxCandVaga(rs.getInt("numMaxCandVaga"));
		v.setOutrosConhecVaga(rs.getString("outrosConhecVaga"));
		v.setQtdeVaga(rs.getInt("qtdeVaga"));
		v.setSalarioVaga(rs.getDouble("salarioVaga"));
		v.setSexoVaga(rs.getString("sexoVaga"));
		v.setSituacaoVaga(rs.getString("situacaoVaga"));
		v.setTipoVaga(rs.getString("tipoVaga"));
		
		//adicionando o objeto a lista
		vagas.add(v);
		}
		return vagas;
    }
	
	public Integer somarConhec(Integer codAluno) throws SQLException{
		// conectar banco
		Integer somaConhec;
		Connection con = ConexaoBD.getConnection();
		String sql = "select sum(nivelConhecTec) as soma from alunoconhectec, aluno where aluno.codAluno="+ codAluno +" and alunoconhectec.codAluno=aluno.codAluno";
		PreparedStatement stmt = (PreparedStatement) con.prepareStatement (sql);
		ResultSet rs = stmt.executeQuery();
		rs.next();
		somaConhec = rs.getInt("soma");
		
		return somaConhec;
    }
	
	public void save(Listacandidato l){
		super.begin();
		super.save(l);
		super.commit();
	}
}
